import { defineStore, acceptHMRUpdate, createPinia } from "pinia";
import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
import getters from "./getters";
import system from "./modul/system";
import user from "./modul/user";
// 第一个参数是应用程序中 store 的唯一 id
export const userStores = defineStore("myApp", {
    state: () => {
        return {
            // 所有这些属性都将自动推断其类型
            system,
            user,
        };
    },
    getters,
    persist: {
        // 修改存储中使用的键名称，默认为当前 Store的 id
        key: "storekey",
        // 修改为 sessionStorage，默认为 localStorage
        storage: window.sessionStorage,
        // 部分持久化状态的点符号路径数组，[]意味着没有状态被持久化(默认为undefined，持久化整个状态)
        paths: ["system", "user"],
        // serializer: {//序列化
        //   deserialize: parse,
        //   serialize: stringify
        // },
        beforeRestore: (ctx) => {
            // console.log(`about to restore '${ctx.store.$id}'`);
        },
        afterRestore: (ctx) => {
            // console.log(`just restored '${ctx.store.$id}'`);
        },
    },
});
if (import.meta.hot) {
    import.meta.hot.accept(acceptHMRUpdate(userStores, import.meta.hot));
}
const pinia = createPinia();
pinia.use(piniaPluginPersistedstate);

export default pinia;
